package vip.zhenzicheng.jvm.jvmbook.part2;

import java.util.HashSet;
import java.util.Set;

/**
 * 运行时常量池溢出
 * VM Args：-XX:PermSize=6M -XX:MaxPermSize=6M
 * <p>上面参数在 JDK 6 及以下版本会出现 <em>java.lang.OutOfMemoryError: PermGen space</em>
 *
 * @author zhenzicheng
 * @date 2022-07-18 12:08
 */
public class RuntimeConstantPoolOOM {
  public static void main(String[] args) {
    // 使用Set保持着常量池引用，避免Full GC回收常量池行为
    Set<String> set = new HashSet<>();
    // 在short范围内足以让6MB的PermSize产生OOM了
    short i = 0;
    while (true) {
      set.add(String.valueOf(i++).intern());
    }
  }
}
